

#import "NSDictionary+Category.h"

@implementation NSDictionary (Category)

#pragma mark - 私有方法


/**
 将NSDictionary中的Null类型的项目转化成@""
 */
+ (NSDictionary *)nullDic:(NSDictionary *)myDic {
   
    NSArray *keyArr = [myDic allKeys];
    NSMutableDictionary *resDic = [[NSMutableDictionary alloc]init];
    
    for (int i = 0; i < keyArr.count; i ++)
    {
        id obj = [myDic objectForKey:keyArr[i]];
        
        obj = [self changeType:obj];
        
        [resDic setObject:obj forKey:keyArr[i]];
    }
    return resDic;
}

/**
  将NSArray中的Null类型的项目转化成@""
 */
+ (NSArray *)nullArr:(NSArray *)myArr {
    
    NSMutableArray *resArr = [[NSMutableArray alloc] init];
    for (int i = 0; i < myArr.count; i ++)
    {
        id obj = myArr[i];
        
        obj = [self changeType:obj];
        
        [resArr addObject:obj];
    }
    return resArr;
}

/**
 将 NSString 类型的原路返回
 */
+ (NSString *)stringToString:(NSString *)string {

    return string;
}

/**
 NSNumber 类型转换为 NSString 类型
 */
+ (NSString *)numberToString:(NSNumber *)number {
    
//    NSNumberFormatter* numberFormatter = [[NSNumberFormatter alloc] init];
//    
//    return [numberFormatter stringFromNumber:number];

    NSString * resultStr = [number stringValue];
    return resultStr;
}

/**
 将 Null 类型的项目转化成@""空字符串
 */
+ (NSString *)nullToString {

    return @"";
}

#pragma mark - 公有方法

/**
 类型识别 : 将所有的NSNull类型转化成@""
 */
+ (id)changeType:(id)myObj {
    
    if ([myObj isKindOfClass:[NSDictionary class]])
    {
        return [self nullDic:myObj];
    }
    else if([myObj isKindOfClass:[NSArray class]])
    {
        return [self nullArr:myObj];
    }
    else if([myObj isKindOfClass:[NSString class]])
    {
        return [self stringToString:myObj];
    }
    else if([myObj isKindOfClass:[NSNull class]])
    {
        return [self nullToString];
    }
//    else if ([myObj isKindOfClass:[NSNumber class]])
//    {
//        return [self numberToString:myObj];
//    }
    else
    {
        return myObj;
    }
}

+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString {
   
    if (!jsonString) return nil;
    
    NSData  * jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
    
    NSError * err;
    
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err];
    
    if(err) {
        
        NSLog(@"json解析失败：%@",err);
        return nil;
    }
    
    return dic;
    
}
@end
